home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib08.dsk
/
STAT PAK.bas
< prev
next >
Wrap
BASIC Source File
|
2023-02-26
|
3KB
|
104 lines
1 REM **********************
2 REM * STAT PAK *
3 REM * BY STEVEN SCHWARTZ *
4 REM * COPYRIGHT (C) 1982 *
5 REM * BY MICRO-SPARC INC *
6 REM * LINCOLN, MA. 01773 *
7 REM **********************
10 REM TITLE PAGE
20 HOME : FOR I = 1 TO 20: PRINT "*-";: NEXT I: PRINT
30 PRINT " D A T A D E S C R I P T I O N": PRINT : FOR I = 1 TO 20: PRINT "*-";: NEXT I
40 VTAB 23: INVERSE : PRINT "* BY STEVEN A. SCHWARTZ *": NORMAL
50 FOR I = 1 TO 4000: NEXT I: HOME
60 REM SET NO. OF VARIABLES AND CASES
70 INPUT "ENTER NUMBER OF VARIABLES: ";NVAR
80 IF NVAR <1 THEN INVERSE : PRINT "NO. OF VARIABLES MUST BE AT LEAST 1.": NORMAL : GOTO 70
90 INPUT "ENTER NUMBER OF CASES: ";CASE
100 IF CASE < = 1 THEN INVERSE : PRINT "YOU MUST HAVE MORE THAN 1 CASE.": NORMAL : GOTO 90
110 DIM NAME$(NVAR),A(CASE,NVAR),SUM(NVAR),MEAN(NVAR),MAX(NVAR),MIN(NVAR),RANGE(NVAR),S2(NVAR),SD(NVAR),SE(NVAR)
120 REM ** ASSIGN NAMES TO VARIABLES
130 HOME : PRINT "ENTER NAME FOR EACH VARIABLE: ": PRINT : PRINT
140 FOR I = 1 TO NVAR
150 PRINT TAB( 5)"VAR. ";I;" = ";
160 INPUT NAME$(I)
170 IF LEN(NAME$(I)) >40 THEN INVERSE : PRINT "MAX. IS 40 CHARACTERS.": NORMAL : GOTO 150
180 IF NAME$(I) = "" THEN INVERSE : PRINT "PLEASE ENTER A NAME.": NORMAL : GOTO 150
190 NEXT I
200 REM ** DATA INPUT
210 HOME : FOR I = 1 TO CASE
220 PRINT "DATA FOR SUBJECT ";I: PRINT : PRINT
230 FOR J = 1 TO NVAR
240 PRINT NAME$(J);" = ";
250 INPUT A(I,J)
260 NEXT J
270 HOME
280 NEXT I
290 REM ** ANALYSES
300 FOR J = 1 TO NVAR
310 GOSUB 570
320 GOSUB 630
330 GOSUB 660
340 GOSUB 750
350 GOSUB 840
360 GOSUB 870
370 GOSUB 950
380 NEXT J
390 REM ** OUTPUT
400 FOR J = 1 TO NVAR
410 HOME :CEN = 20 - INT(( LEN(NAME$(J)))/2)
420 FOR I = 1 TO 40: PRINT "*";: NEXT I: PRINT
430 PRINT TAB( CEN)NAME$(J): PRINT
440 FOR I = 1 TO 40: PRINT "*";: NEXT I: PRINT : PRINT
450 PRINT "SUM = ";SUM(J)
460 PRINT "MEAN = ";MEAN(J)
470 PRINT "MAXIMUM = ";MAX(J)
480 PRINT "MINIMUN = ";MIN(J)
490 PRINT "RANGE = ";RANGE(J)
500 PRINT "VARIANCE = ";S2(J)
510 PRINT "STAND. DEV. = ";SD(J)
520 PRINT "STAND. ERR. = ";SE(J)
530 PRINT : PRINT "NO. OF CASES = ";CASES
540 VTAB 24: INVERSE : PRINT " PRESS ANY KEY TO CONTINUE ";: GET Z$: NORMAL
550 NEXT J
560 HOME : END
570 REM ** COMPUTE TOTAL (SUM)
580 SUM(J) = 0
590 FOR I = 1 TO CASE
600 SUM(J) = SUM(J) +A(I,J)
610 NEXT I
620 RETURN
630 REM ** COMPUTE MEAN
640 MEAN(J) = SUM(J)/CASE
650 RETURN
660 REM ** FIND MAXIMUM VALUE
670 MAX(J) = A(1,J)
680 Z = 1
690 FOR I = 2 TO CASE
700 IF A(I,J) < = MAX(J) THEN 730
710 Z = I
720 MAX(J) = A(Z,J)
730 NEXT I
740 RETURN
750 REM ** FIND MINIMUM VALUE
760 MIN(J) = A(1,J)
770 Z = 1
780 FOR I = 2 TO CASE
790 IF A(I,J) > = MIN(J) THEN 820
800 Z = I
810 MIN(J) = A(Z,J)
820 NEXT I
830 RETURN
840 REM ** CALCULATE RANGE
850 RANGE(J) = MAX(J) -MIN(J)
860 RETURN
870 REM ** CALCULATE VARIANCE AND STANDARD DEVIATION
880 SS = O
890 FOR I = 1 TO CASE
900 SS = SS +(A(I,J) -MEAN(J)) ^2
910 NEXT I
920 S2(J) = SS/(CASE -1)
930 SD(J) = SQR(S2(J))
940 RETURN
950 REM ** CALCULATE STANDARD ERROR OF THE MEAN
960 SE(J) = SD(J)/( SQR(CASE))
970 RETURN